dojo.require("dojo.fx");
codigoEstrellas = '<img src="images/estrella_off" class="estrella1" alt="*" />\
<img src="images/estrella_off" class="estrella2" alt="*" />\
<img src="images/estrella_off" class="estrella3" alt="*" />';
var contenedor = null;

function activaBorde(event) {
    event.currentTarget.style.borderColor = "#f59634";
}

function desactivaBorde(event) {
    event.currentTarget.style.borderColor = "#555";
}

function cambiaEstadoFicha(event) {
    var ficha = event.currentTarget.parentNode.firstChild;
    if (ficha.style["left"] == "230px") {
        var anim = dojo.fx.slideTo({node: ficha, left: "8", top: "8", unix: "px"});
        anim.duration = 200;
        anim.play();
        event.currentTarget.style.backgroundImage = "url(images/flechitadcha.png)";
    } else {
        var anim = dojo.fx.slideTo({node: ficha, left: "230", top: "8", unix: "px"});
        anim.duration = 200;
        anim.play();
        event.currentTarget.style.backgroundImage = "url(images/flechitaizda.png)";
    }
}

function activaEstrella1(event) {
    var estrellas = event.currentTarget.parentNode;
    estrellas.childNodes[0].src = "images/estrella_on.png";
}

function desactivaEstrella1(event) {
    var estrellas = event.currentTarget.parentNode;
    estrellas.childNodes[0].src = "images/estrella_off.png";
}

function activaEstrella2(event) {
    var estrellas = event.currentTarget.parentNode;
    estrellas.childNodes[0].src = "images/estrella_on.png";
    estrellas.childNodes[1].src = "images/estrella_on.png";
}

function desactivaEstrella2(event) {
    var estrellas = event.currentTarget.parentNode;
    estrellas.childNodes[0].src = "images/estrella_off.png";
    estrellas.childNodes[1].src = "images/estrella_off.png";
}

function activaEstrella3(event) {
    var estrellas = event.currentTarget.parentNode;
    estrellas.childNodes[0].src = "images/estrella_on.png";
    estrellas.childNodes[1].src = "images/estrella_on.png";
    estrellas.childNodes[2].src = "images/estrella_on.png";
}

function desactivaEstrella3(event) {
    var estrellas = event.currentTarget.parentNode;
    estrellas.childNodes[0].src = "images/estrella_off.png";
    estrellas.childNodes[1].src = "images/estrella_off.png";
    estrellas.childNodes[2].src = "images/estrella_off.png";
}

function devuelveEstrellas() {
    contenedor.innerHTML = codigoEstrellas;
    conecta_eventos("estrellas");
}

function votaUnPunto(event) {
    var estrellas = event.currentTarget.parentNode;
    var foto = estrellas.parentNode.parentNode;
    contenedor = estrellas;
    estrellas.innerHTML = "Enviando...";
    dojo.xhrPost( {
        url: "votar.php",
        content: {foto_id: foto.id, usuario: nsid, puntos: 1},
        handleAs: "text",
        timeout: 15000,

        // Se llama a LOAD si ha ido bien.
        load: function(response, ioArgs) {
            estrellas.innerHTML = response;

            
            if (estrellas.innerHTML.search("Gracias") < 0) {
                setTimeout("devuelveEstrellas()", 1500);
            } else {
                // Actualizo los puntos de esta foto
                var ficha = estrellas.parentNode;
                var textPuntos = ficha.lastChild;
                var intPuntos = eval(textPuntos.innerHTML.split(" ")[0]);
                intPuntos += 1;
                if (intPuntos == 1) {
                    textPuntos.innerHTML = "1 punto";
                } else {
                    textPuntos.innerHTML = intPuntos + " puntos";
                }
            }
            return response;
        },

        // Se llama a ERROR en caso de error.
        error: function(response, ioArgs) {
            estrellas.innerHTML = response;
            setTimeout("devuelveEstrellas()", 1500);
            return response;
        }
    });
}

function votaDosPuntos(event) {
    var estrellas = event.currentTarget.parentNode;
    var foto = estrellas.parentNode.parentNode;
    contenedor = estrellas;
    estrellas.innerHTML = "Enviando...";
    dojo.xhrPost( {
        url: "votar.php",
        content: {foto_id: foto.id, usuario: nsid, puntos: 2},
        handleAs: "text",
        timeout: 15000,

        // Se llama a LOAD si ha ido bien.
        load: function(response, ioArgs) {
            // actualizar puntos de foto;
            estrellas.innerHTML = response;
            
            if (estrellas.innerHTML.search("Gracias") < 0) {
                setTimeout("devuelveEstrellas()", 1500);
            } else {
                // Actualizo los puntos de esta foto
                var ficha = estrellas.parentNode;
                var textPuntos = ficha.lastChild;
                var intPuntos = eval(textPuntos.innerHTML.split(" ")[0]);
                intPuntos += 2;
                if (intPuntos == 1) {
                    textPuntos.innerHTML = "1 punto";
                } else {
                    textPuntos.innerHTML = intPuntos + " puntos";
                }
            }
            return response;
        },

        // Se llama a ERROR en caso de error.
        error: function(response, ioArgs) {
            estrellas.innerHTML = response;
            setTimeout("devuelveEstrellas()", 1500);
            return response;
        }
    });
}

function votaTresPuntos(event) {
    var estrellas = event.currentTarget.parentNode;
    var foto = estrellas.parentNode.parentNode;
    contenedor = estrellas;
    estrellas.innerHTML = "Enviando...";
    dojo.xhrPost( {
        url: "votar.php",
        content: {foto_id: foto.id, usuario: nsid, puntos: 3},
        handleAs: "text",
        timeout: 15000,

        // Se llama a LOAD si ha ido bien.
        load: function(response, ioArgs) {
            // actualizar puntos de foto;
            estrellas.innerHTML = response;
            
            if (estrellas.innerHTML.search("Gracias") < 0) {
                setTimeout("devuelveEstrellas()", 1500);
            } else {
                // Actualizo los puntos de esta foto
                var ficha = estrellas.parentNode;
                var textPuntos = ficha.lastChild;
                var intPuntos = eval(textPuntos.innerHTML.split(" ")[0]);
                intPuntos += 3;
                textPuntos.innerHTML = intPuntos + " puntos";
            }
            return response;
        },

        // Se llama a ERROR en caso de error.
        error: function(response, ioArgs) {
            estrellas.innerHTML = response;
            setTimeout("devuelveEstrellas()", 1500);
            return response;
        }
    });
}

function conecta_eventos(cosas) {
    if (cosas.search("foto") >= 0) {
        dojo.query(".foto").forEach(
            function(foto) {
                dojo.connect(foto, 'onmouseover', activaBorde);
                dojo.connect(foto, 'onmouseout', desactivaBorde);
            }
        );
    } else if (cosas.search("flechica") >= 0) {
        dojo.query(".flechica").forEach(
            function(flechica) {
                dojo.connect(flechica, 'onclick', cambiaEstadoFicha);
            }
        );
    } else if (cosas.search("estrellas") >= 0) {
        dojo.query(".estrella1").forEach(
            function(estrella1) {
                dojo.connect(estrella1, 'onmouseover', activaEstrella1);
                dojo.connect(estrella1, 'onmouseout', desactivaEstrella1);
                dojo.connect(estrella1, 'onclick', votaUnPunto);
            }
        );

        dojo.query(".estrella2").forEach(
            function(estrella2) {
                dojo.connect(estrella2, 'onmouseover', activaEstrella2);
                dojo.connect(estrella2, 'onmouseout', desactivaEstrella2);
                dojo.connect(estrella2, 'onclick', votaDosPuntos);
            }
        );

        dojo.query(".estrella3").forEach(
            function(estrella3) {
                dojo.connect(estrella3, 'onmouseover', activaEstrella3);
                dojo.connect(estrella3, 'onmouseout', desactivaEstrella3);
                dojo.connect(estrella3, 'onclick', votaTresPuntos);
            }
        );
    }
}

function coloca_medallas() {
    var foto;
    var medalla;
    
    if (primero != 0) {
        var foto = dojo.byId(primero);
        var medalla = foto.parentNode.lastChild;
        medalla.src = "images/oro.png";
        medalla.style.visibility = "visible";
     }

    if (segundo != 0) {
        foto = dojo.byId(segundo);
        medalla = foto.parentNode.lastChild;
        medalla.src = "images/plata.png";
        medalla.style.visibility = "visible";
    }

    if (tercero != 0) {
        foto = dojo.byId(tercero);
        medalla = foto.parentNode.lastChild;
        medalla.src = "images/bronce.png";
        medalla.style.visibility = "visible";
    }
}

dojo.addOnLoad(function() {
    var msgTexto = dojo.byId("mensajeCargando");
    var msgCargando = dojo.byId("cargando");

    dojo.query("div.ficha").style("left", "230px");
    msgTexto.innerHTML = "Conectando eventos...";
    conecta_eventos("foto");
    conecta_eventos("flechica");
    conecta_eventos("estrellas");

    msgTexto.innerHTML = "Colocando medallas...";
    coloca_medallas();

    msgCargando.style.display = "none";
});

